namespace Test.ConsoleProgram.Algorithm.SwordFingerOffer
{
    [TestDescription("剑指 Offer 0011. 旋转数组的最小数字")]
    public class No0011_MinArray : AbsBaseTestItem
    {
        /*
        把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
        输入一个递增排序的数组的一个旋转，输出旋转数组的最小元素。
        例如，数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转，该数组的最小值为1。
        */

        public override void OnTest()
        {
            Assert.TestExe(MinArray, new int[] { 3, 4, 5, 1, 2 }, 1);
            Assert.TestExe(MinArray, new int[] { 2, 2, 2, 0, 1 }, 0);
        }

        public int MinArray(int[] numbers)
        {
            int minNum = int.MaxValue;
            for (int i = numbers.Length - 1; i >= 0; i--)
            {
                int itemNum = numbers[i];
                if (itemNum <= minNum)
                {
                    minNum = itemNum;
                    continue;
                }
                return minNum;
            }
            return minNum;
        }
    }
}
